python 类与对象

语法:

class ClassName:
    expression

示例:

# 创建类
class Person:
    # 构造函数
    def __init__(self,name,sex,age):
        self.age = age
        self.sex = sex
        self.name = name
    # 自我介绍
    def self_introduce(self):
        print('invoke Person.self_introduce')
        return'我的名字是{}, 我是一个{}孩, 我今年{}岁'.format(self.name,self.sex,self.age)
    
if __name__ == '__main__':
    p1=Person("张三","男",18)
    print(p1.self_introduce())

    # del p1.name #删除属性
    # print(p1.name) #报错

    # del p1 # 删除对象
    # print(p1.name) #报错

运行结果:

invoke Person.self_introduce
我的名字是张三, 我是一个男孩, 我今年18岁

继承

语法:

class ClassName(ParentClassName):
    expression

示例:

# 继承
class Woman(Person):

    def __init__(self,name,sex): # java 中的构造方法
        super().__init__(name,sex,0)
        self.name = name
        self.sex = sex

    def __init__(self,name,sex,age): # java中的构造方法, python中有多个只有最后一个会生效
        Person.__init__(self,name,sex, age) # java 中的 super()
        
    def self_introduce(self):
        print('invoke Woman.self_introduce')
        return Person.self_introduce(self)
        
if __name__ == '__main__':
    han_mei_mei = Woman("han mei mei",'girl',18)
    print( han_mei_mei.self_introduce())

输出:

invoke Woman.self_introduce
invoke Person.self_introduce
我的名字是han mei mei, 我是一个girl孩, 我今年18岁

注意:

有多个构造时只有最后一个生效,执行下面的语句

执行下面的语句

lucy = Woman("lucy",'girl') # 报错

报错:

Traceback (most recent call last):
  File "/Users/xieming/workspace/z_study/Python/teach/类与对象", line 42, in <module>
    lucy = Woman("lucy",'girl')
TypeError: __init__() missing 1 required positional argument: 'age'
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容