python学习Day14-类

类:面向对象

class people:
    '帮助信息:XXXXX'
    number = 100
    #构造函数,初始化__init__;self必须指定的额外参数
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def display(self):
        print('number = :',people.number)
    def display_name(self):
        print(self.name)
        

类的帮助信息/说明(doc)

people.__doc__
'帮助信息:XXXXX'

类的实例化

实例

p1 = people('tang',30)
p2 = people('php',40)

调用属性

p1.name
'tang'

调用方法

p1.display()
number = : 100
p2.display()
number = : 100

修改属性

p2.name
'php'
p2.name = 'java'
p2.name
'java'
del p2.name
p2.name
---------------------------------------------------------------------------

AttributeError                            Traceback (most recent call last)

<ipython-input-25-1fe4036a7206> in <module>
----> 1 p2.name


AttributeError: 'people' object has no attribute 'name'

判断属性是否存在(hasattr)

hasattr(p1,'name')
True
hasattr(p2,'name')
False
hasattr(p1,'sex')
False

属性获取(getattr)

getattr(p1,'name')
'tang'

属性设置(setattr)

setattr(p1,'name','kai')
getattr(p1,'name')
'kai'

类的内置属性

#类的说明
print(people.__doc__)
#类的名字
print(people.__name__)
#类的模块
print(people.__module__)
#类的父类构成的元素
print(people.__bases__)
#类的整体组成
print(people.__dict__)
帮助信息:XXXXX
people
__main__
(<class 'object'>,)
{'__module__': '__main__', '__doc__': '帮助信息:XXXXX', 'number': 100, '__init__': <function people.__init__ at 0x00000199D0BE0730>, 'display': <function people.display at 0x00000199D0BE08C8>, 'display_name': <function people.display_name at 0x00000199D0BE0950>, '__dict__': <attribute '__dict__' of 'people' objects>, '__weakref__': <attribute '__weakref__' of 'people' objects>}

类的继承

class Parent:#定义父类
    number = 100
    def __init__(self):
        print('调用父类构造函数')
    def parentM(self):
        print('调用父用方法')
    def setAttr(self,attr):
        Parent.parentAttr = attr
    def getAttr(self):
        print('父类属性:',Parent.parentAttr)
    def newM(self):
        print('父类要被重写的方法')
    
class Child(Parent):#定义子类
    def __init__(self):
        print('调用子类构造函数')
    def childM(self):
        print('调用子类方法')
    def newM(self):
        print('子类改掉的方法')
    

子类的实例化

c = Child()
c.childM()
调用子类构造函数
调用子类方法

调用父类的方法

c.parentM()
c.setAttr(100)
c.getAttr()
调用父用方法
父类属性: 100

注意:子类不会调用父类的构造函数

方法重写

c.newM()
子类改掉的方法

未完待续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值