四时宝库

程序员的知识宝库

5分钟掌握Python(九)之定义类(python怎么定义类)

eg:

class ClassA():
    var1 = 100
    var2 = 0.01
    var3 = '两点水'

    def fun1():
        print('我是 fun1')

    def fun2():
        print('我是 fun1')

    def fun3():
        print('我是 fun1')

1)@classmethod注解(声明为类方法,cls为关键字):

eg

class ClassA():
    var1 = '123'

    @classmethod
    def fun1(cls):
        print('原参数的值:' + cls.var1)
        cls.var1 = input('请输入要修改的值:')
        print('修改后的值:' + cls.var1)
        cls.var2 = input('要增加的值:')
        print('增加后的值:' + cls.var2)

ClassA.fun1()

2)类的实例化(self关键字):

eg:

class ClassC():
    var1 = '111'

    def fun1(self):
        print('var1 的值为:' + self.var1)

ob = ClassC()
ob.fun1()
print(ob.var1)

3)初始化函数:

def __init__(self,[...):

4)析构函数:

def __del__(self,[...):

5)继承:

eg

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

class UserInfo(object):
    lv = 5

    def __init__(self, name, age, account):
        self.name = name
        self._age = age
        self.__account = account

    def get_account(self):
        return self.__account

    @classmethod
    def get_name(cls):
        return cls.lv

    @property
    def get_age(self):
        return self._age


class UserInfo2(UserInfo):
    def __init__(self, name, age, account, sex):
        super(UserInfo2, self).__init__(name, age, account)
        self.sex = sex;


if __name__ == '__main__':
    userInfo2 = UserInfo2('两点水', 23, 347073565, '男');
    # 打印所有属性
    print(dir(userInfo2))
    # 打印构造函数中的属性
    print(userInfo2.__dict__)
    print(UserInfo2.get_name())

6)属性和方法的访问控制(_agr:私有属性,靠自觉控制,__agr:私有属性,无法直接访问,可间接访问):

eg

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

class UserInfo(object):
    def __init__(self, name, age, account):
        self.name = name
        self._age = age
        self.__account = account

    def get_account(self):
        return self.__account


if __name__ == '__main__':
    userInfo = UserInfo('两点水', 23, 347073565);
    # 打印所有属性
    print(dir(userInfo))
    # 打印构造函数中的属性
    print(userInfo.__dict__)
    print(userInfo.get_account())
    # 用于验证双下划线是否是真正的私有属性
    print(userInfo._UserInfo__account)

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接