class Poo():
id = '2191441'
def __init__(self, name, nation):
self.name = name
self.__nation = nation
def out(self):
print(self.name, self.__class__.id,self.__nation)
def __in(self):
print(self.name)
@classmethod #修饰符
def outt(cls): #cls为class的简写
print(cls.id)
@property
def nation(self):
print(self.__nation)
class Zoo(Poo):
def __init__(self, name, nation, score):
Poo.__init__(self, name, nation) #继承时离不开这句 继承父类的属性
self.score = score # 子类中新加的属性
def oout(self):
#Poo.out(self)
super().out()
print(self.score)
以上面的代码为例:
类:用来描述具有相同 属性 和 方法 对象的集合。
属性: __init__中定义的变量
方法: 类中 定义的 函数
类实例化: 创建对象 即 (obj = Poo.out('a',23,'male'))
类变量: 定义在类中的 不在属性中定义的 例如 id (访问: POO.id)
实例变量: 定义在属性中的 类实例化时进行赋值 例如 name (访问:obj = Poo.out('a',23,'male') >> obj.name)
类方法: 联想 类变量和实例变量的关系, 类方法就是无需实例化调用的方法 直接类名+类方法名(Poo.outt()). 类方法不使用self参数 + @classmethod修饰符
私有属性:例如__init__定义的__nation 这样的直接 obj.__nation访问不到, 但可以通过out方法访问 因为私有属性可以在类中调用 故不影响out方法的输出
私有方法:例如 def __in(self) 该方法直接在类中使用 不能 Poo.__in()进行调用
封装: 在面向对象的编程中,通常情况下很少让外部类直接访问类内部的属性和方法,而是向外部类提供一些按钮,对其内部的成员进行访问,以保证程序的安全性
私有属性伪装为属性: 对于__nation 想让它假装作 正常属性的样子 可以通过obj.nation调用 就通过 @property 修饰符 和 nation函数完成
继承: 子类从父类那里获得其已有的属性与方法的现象
继承(属性继承): 通过 Zoo(Poo) 这种方法 属性部分 需要有 Poo.__init__(self, name, age, sex)
继承(方法继承): 在子类的oout方法中 通过Poo.out(self) 或者 super().out() 进行 父类 方法的继承 super().out()不加self
多态: https://www.cnblogs.com/Marcki/p/10111943.html