1. 最简单的类的定义
class Student():
name = 'lili'
age = 0
sum1 = 0
def __init__(self, name, age, sum1):
# 构造函数
self.name = name
self.age = age
self.sum1 = sum1
def print_msg(self):
print(self.name, self.age)
2. 在实例方法中访问类变量的两种方法
def print_sum1(self):
# 实例方法访问sum1类变量
print(self.__class__.sum1)
print(Student.sum1)
# 访问实例变量
print(self.sum1)
3. 如何定义一个类方法
@classmethod
def plus_sum(cls):
cls.sum1 += 1
print(cls.sum1)
4. 如何定义一个静态方法
@staticmethod # 静态方法, 对象和类都可以访问
def add():
Student.sum1 += 1 # 静态方法也可以访问类变量
print(Student.sum1)
5. 如何改变一个方法的可见性
def __change_age(self, age): # 改变方法的可见性,在方法名字前加__变成私有
self.age = age
6.如何改变一个实例变量的可见性
类似,在变量之前加下划线。但是你会执行发现
student1 = Student('wang', 17, 9) # 实例化
student1.change_age(8)
student1.__name = 'oo'
print(student1.__name)
依旧可以执行,是否私有变量无效呢?其实不是,原因在于python的.操作会给student1添加一个新的成员变量。
我们可以用student1.dict() 查看student1的成员列表
7. 继承
python 是支持多继承的
class Human():
sum = 0
def __init__(self, name, age):
self.name = name
self.age = age
def get_name(self):
print(self.name)
class Student(Human): # 继承People类
如何在子类调用父类的构造函数
class Human():
sum = 0
def __init__(self, name, age):
self.name = name
self.age = age
def get_name(self):
print(self.name)
class Student(Human): # 继承People类
def __init__(self, school, name, age):
# 构造函数
self.school = school
# Human.__init__(self, name, age) # 调用父类的构造函数, **注意这里需要传递self**
super(Student, self).__init__(name, age) # 推介使用这种方法调用父类构造函数