- object类是所有类的父类,因此所有的类都有object类的属性和方法;方法的本质就是属性class person: def __init__(self,name,age): self.name=name self.age=age def say_name(self): print(self.name,"的年龄是",self.age) obj = object() print(dir(obj)) s2=person("沈哥",18) print(dir(s2)) print(s2.say_name) print(type(s2.say_name))
- 使用alt+7可以看到属性和方法
- 重写__str__()方法
- object有一个__str__()方法,用于返回一个对于“对象的描述”。内置函数str(对象),调用的就是__str__()
- __str__()经常用于print()方法,帮助我们查看对象的信息。__str__()可以重写
class person: def __init__(self,name,age): self.name=name self.age=age def say_name(self): print(self.name,"的年龄是",self.age) def str(self): print("first") s=str(person)
这块需要注意,只有私有属性可以直接这样使用
class person:
def __init__(self,name,age):
self.name=name
self.age=age
def __str__(self):
"将对象转化为字符串"
print("first")
return "名字是:{0},年龄是{1}".format(self.name,self.age)
p1=person('牛逼',18)
print(p1)
p2=str(person)
3.多重继承
Python支持多重继承,一个子类可以有多个“直接父类”。这样,就具备了“多个父类”的特点。但是由于,这样会被“类的整体层次”搞的异常复杂,尽量避免使用。
class A:
def aa(self):
print("aa")
class B:
def bb(self):
print("bb")
class C(B,A):
def cc(self):
print("cc")
c = C()
c.cc()
c.bb()
c.aa()
示例代码
4.MRO方法解析顺序
MRO(Method Resolution Order):方法解析顺序。 我们可以通过mro()方法获得“类的层次结构”,方法解析顺序也是按照这个“类的层次结构”寻找的。
class A:
def say(self):
print("aa")
class B:
def say(self):
print("bb")
class C(B,A):
def say(self):
print("cc")
c=C()
print(C.mro())
c.say()
按从左到右顺序寻找,最先寻找子类



