【python】类、类方法、继承

一、类

类(Class)是用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。额…还是举例说明吧

class human: # 定义一个类叫human
    name = "someone" # 类属性name
    age = 20; # 类属性age
    def say(self): # 类方法,所有的类方法都至少有一个参数self
        print("hello")
    def think(self,a=1,b=2):
        print(a+b)
        
human1 = human() # 实例化human类,得到对象human1
print(human1.name) # 访问对象的name属性
human1.say() # 调用对象的say()方法
human1.think(a=2,b=3) # 调用对象的think()方法,并且传入参数

类里有一个__init__()方法(构造方法),此方法由两个下划线开头和结尾,它会在实例化类的时候自动执行,无需手动调用,所以一般可以用它完成一些初始化工作。上面的代码可以改成下面的

class human: # 定义一个类
    def __init__(self,name="someone",age=20): # 此方法自动执行,用于初始化
        self.name = name  # 类属性name
        self.age = age;  # 类属性age
    def say(self): # 类方法,所有的类方法都至少有一个参数self
        print("hello")
    def think(self,a=1,b=2):
        print(a+b)

human1 = human("pan",30) # 实例化human类,得到对象human1
print(human1.name) # 访问对象的name属性
human1.say() # 调用对象的say()方法
human1.think(a=2,b=3) # 调用对象的think()方法,并且传入参数

我们需要注意几点

1.参数

类里所有的方法都至少有一个参数self(或者this),其他的与普通方法无区别

2.专有方法

除了__init__方法,还有其他一些以双下划线开头和结尾的方法,都属于专有方法,大概有

__init__ : 构造函数,在生成对象时调用
__del__ : 析构函数,释放对象时使用
__repr__ : 打印,转换
__setitem__ : 按照索引赋值
__getitem__: 按照索引获取值
__len__: 获得长度
__cmp__: 比较运算
__call__: 函数调用
__add__: 加运算
__sub__: 减运算
__mul__: 乘运算
__truediv__: 除运算
__mod__: 求余运算
__pow__: 乘方

3.私有属性和私有方法

在一个类里定义属性或者方法的时候,若以双下划线开头,声明是私有属性或方法,不能在类的外部被使用或直接访问

二、继承

可以用A类继承于B类,这样B类所具有的属性和方法A类也有,比如说student类继承于human类,则human的name、age、say()等内容student类不用自己定义就有了,而且还能重写父类的方法

class human: # 定义一个类
    def __init__(self, name="someone", age=20):
        self.name = name  # 类属性name
        self.age = age # 类属性age
    def say(self): # 类方法,所有的类方法都至少有一个参数self
        print("hello")
    def think(self,a=1,b=2):
        print(a+b)

# human1 = human("pan",30) # 实例化human类,得到对象human1
# print(human1.name) # 访问对象的name属性
# human1.say() # 调用对象的say()方法
# human1.think(a=2,b=3) # 调用对象的think()方法,并且传入参数

class student(human):
    def __init__(self, school="sxu", major="chem"): # 初始化类student
        super().__init__("pan", 25) # 调用父类human的初始化方法
        self.school = school
        self.major = major
    def think(self,a=1,b=2): # 重写think()方法,父类用加法,这里用乘法
        print(a*b)

stu = student() # 实例化类得到对象stu
print(stu.name) # stu也有父类的name属性
print(stu.school)
print(stu.major)
stu.major = "python" # 修改major属性
print(stu.major)
stu.think(2, 3)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章