-
类的定义
用来描述相同属性和方法的集合
class Student(): name = '' age = 0 # 类里面的方法要加self def print_info(self): print(self.name) # 实例化 min = Student() min.print_info()
-
方法和函数的区别
类里面的称为方法,模块里面称函数
-
构造函数
-
_init_()构造函数
def __init__(self,...): pass 构造方法,初始化对象的特征,只能返回None
-
类变量和实例变量
类变量:为所有对象所共享的变量
实例变量:每个对象所独有的变量class Student(): # 类变量 sum = 0 # 构造函数 def __init__(self, name, age): # 实例变量 self.name = name self.age = age # 实例方法 def print_info(): print("name:" + self.name) print("age:" + str(self.name)) student = Student("min", 18) print(student.name) print(Student.sum)
-
实例方法
对象拥有的方法,实例方法第一个参数必须为self,在实例方法中调用类变量 self._class_.类变量 = 2 或者是 Student.类变量 = 2 -
类方法
class Student(): # 类变量 sum = 0 # 构造方法 def __init__(self, name, age): self.name = name self.age = age self.__class__.sum = 1 # 实例方法 实例方法调用类变量 self.__class__.类变量来访问 def print_info(self): print(self.name) # 类方法 注解添加@classmethod变成一个类方法,类方法可以直接使用cls.类变量访问 类方法无法访问实例变量 @classmethod def plus_sum(cls): cls.sum += 1 student1 = Student('min', 18) Studnet.name Student.plus_sum() # 对象也可以调用类的方法,不建议调用 student1.plus_sum()
-
静态方法
注解@staticmethod
不需要传递self或者是cls
静态方法基本和这个类没有什么联系
静态方法也可以调用类变量 不能调用实例变量
对象能调用静态方法
类也可以调用静态方法 -
成员可见性
public(不加双下划线就是公开的)
private(前面加双下划线就会变成私有的方法或者变量_score)
Python的私有变量保护机制就是将_的变量改了一个名字,所以在python中没有绝对的私有变量。
-
-
继承
class Human: sum = 0 def __init__(self, name, age): self.name = name self.age = age def get_name(self): print(self.name) def do_homework(self): print("This is father method") class Student(Human): # sum = 0 def __init__(self, school, name, age): # Human.__init__(self, name, age) super(Student, self).__init__(name, age) self.school = school # self.__score = 0 # self.__class__.sum += 1 def do_homework(self): super(Student, self).do_homework() print(self.name + "正在做作业...") # Student类继承自Human父类 # super关键字: # 在子类中调用父类的方法用super关键字 # super(Student, self).__init__(name, age)
网友评论