python 面向对象

类与对象

类属性,

类变量

调用方式:类名.变量名或者self.__class__.变量名

实例变量

调用方式:对象名.变量名或者self.变量名

类方法,

属于类的方法默认函数参数是cls,代表类本身,需要@classmethoo作为装饰符

调用方式:类名.类方法(需要加括号)

类的私有属性

类的里面有私有方法和私有属性,私有属性或方法不能在类的外部被访问使用

私有方法必须有self参数,且把它作为第一个参数.

这样的做法是为了保证程序的安全性,这就是封装.

@property的用法与神奇之处

假设给某个函数装上了这个装饰器,那么就当作伪属性来调用了.

调用方式:对象.函数(无需加括号)

类的继承

一个儿子可以有多个爸爸,并会爸爸的技能.QAQ

需要手动调用父类构造方法,父类名.__init__(self,变量,变量)

注意子类的构造变量必须得和父类的构造变量相同,才能把子类的变量,

传递给父类构造方法.

super()调用父类方法

super().父类方法()(调用不想要加self) =  父类.父类方法(self),(需要加self)

以上那个方法需要参数就写参数,不要需要直接:对象.方法.() .ok.希望我自己看得懂.

class A:
#私有方法和私有变量,无法从外部访问,类属性和对象变量都可以伪装成私有变量
a = 0 #类属性
def __init__(self,name,age):#构造方法
self.name = name #对象变量
self.__age = age #私有变量,只能在内部调用
A.a += 1 #每创建个实例对象就加1用来统计对象

def study(self):#属于公有方法,外部内部都能调用:self.方法()
print("姓名:{},年龄:{}".format(self.name,self.__age))

def __age1(self): #私有方法,只能在内部调用
print('师生数量:{}'.format(A.a))

def hello(self):
self.__age1() #内部调用方法
print(self.__age) #内部变量调用
self.study()
@property
def user(self): #有@property装饰器后就伪装成了属性,不用加括号就能调用
self.hello()
@classmethod #类方法
def name(cls): #调用类的变量
print(cls.a)

user = A('licheng',19) #创建实例对象
user.study() #打印学习信息
user.hello() #调用实例的hello方法,hello方法又调用私有方法
print(user.name,) #对象调用实例变量和私有变量,
print(A.a) #访问类变量
user.user #调用实例伪属性方法
A.name()#调用类方法
原文地址:https://www.cnblogs.com/lc1013/p/10300863.html