python面向对象

python类中的构造函数和析构函数

class Employee:
    count=0
#构造函数
    def __init__(self,name,salary):
        self.name=name
        self.salary=salary
        Employee.count=Employee.count+1
#析构函数
    def __del__(self):
        print("over")
    def dispaly(self):
        print("姓名:"+self.name)
e=Employee("wanghuaiyu",5)
e.dispaly()

 

你也可以使用以下函数的方式来访问属性:

  • getattr(obj, name[, default]) : 访问对象的属性。
  • hasattr(obj,name) : 检查是否存在一个属性。
  • setattr(obj,name,value) : 设置一个属性。如果属性不存在,会创建一个新属性。
  • delattr(obj, name) : 删除属性。

简单的类级继承

class People:
#构造函数
    def __init__(self,name):
        self.name=name
        print("父类构造方法")
#析构函数
    def __del__(self):
        print("over")
    def dispalyName(self):
        print("姓名:"+self.name)

class student(People):
    def __init__(self,name,age):
        People.__init__(self,name)
        self.age=age
        print("子类构造方法")
    def showAge(self):
        print(self.age)
p=student("wanghuaiyu",16)
p.dispalyName()
p.showAge()

 类的属性与方法

class People:
#构造函数(__init__属于特殊方法
    #_加变量是protected类型
    _age=10
    def __init__(self,name):
        #__加变量是private类型
        self.__name=name
        print("父类构造方法")

特殊的属性与方法

(1)__slots__:该属性是一个保存字符串的元组,使用该属性后我们只能添加该类__slots__中包含的属性和函数

#未使用,此时代码正常
class People:
    pass
p=People()
p.name="wanghuaiyu"
p.age=20
#使用后,此时最后一行报错因为__slots__中没有age属性
class People:
    __slots__ = ('name')
p=People()
p.name="wanghuaiyu"
p.age=20


(2)__str()__(self):函数返回一个字符串

class People:
    __slots__ = ('name','age')
    def __str__(self):
        return "wanghuaiyu:%d"%self.age
p=People()
p.name="wanghuaiyu"
p.age=20

print(p.__str__())

 

posted @ 2020-09-15 22:50  王怀宇  阅读(80)  评论(0编辑  收藏  举报