变量
1,成员变量(实例变量)(字段)重点
2.类变量(静态变量)直接写在类中的,共享出去的
class Person:
country = "中国" # 类变量. 不属于对象, 对象可以访问.
def __init__(self, name, num, gender, birthday):
# 成员变量(实例变量)
self.name = name
self.num = num
self.gender = gender
self.birthday = birthday
# 对象来访问(成员方法)(实例方法)
def marray(self, duifang):
print("人会结婚%s" % duifang)
alex = Person("李杰", 10086, "男", "昨天")
alex.country = "澳大利亚" # 注意。 这里和类变量没由一毛钱关系, 给alex单独加一个属性叫country = ”澳大利亚“
wusir = Person("吴佩琪", 10010, "女", "今天")
print(alex.country) # 澳大利亚 # 拿到的是自己的。成员实例变量 字段
print(wusir.country) # 中国
print(Person.country) # 中国
# 总结:类变量,用类名去操作. 规范.
类的成员
成员
class Person:
def __init__(self, name, num, gender, birthday):
# 成员变量(实例变量)
self.name = name
self.num = num
self.gender = gender
self.birthday = birthday
# 对象来访问(成员方法)(实例方法)
def marray(self, duifang):
print("人会结婚%s" % duifang)
成员: 在类中定义的变量和方法都被成为成员
__init__ 和 method都属于类的成员方法,又称为实类方法
这样的对象需要对象来访问,self.属性1 = 参数1 是给对象设置
属性信息,含义是这个对象的xxx属性是XXX这种东西又被称为成员变量
或者实例变量,再或者被称为字段
方法
方法
1.成员方法(实例方法) 加了self,调用的时候,必须用对象去访问
2.类方法,当方法需要传递类名的时候,需要类方法,规范规则 :在上方添加@classmethod
类方法。类方法和静态方法差不多,只不过类方法需要在参数列表的第一个位置
预留一个位置,通常对第一个参数起名字叫cls,类方法在调用的时候,不需要
传递实例对象,但是系统会自动把类传递给第一个参数,类方法在编写的时候
需要添加@classmethod
3.静态方法,当你的方法不需要传递当前对象的时候 规则 在上面加@staticmethod
class cars:
def __init__(self):
pass
def run(self): # 成员方法(实例方法)
# 用对象直接去访问的方法叫成员方法(实例方法) #实例方法需要传递类的对象self
print ('车跑老快了')
@staticmethod #静态方法
def jisuan(a,b):
print ('程序运行过这里')
return a+b
# @classmethod
# def clsmethod(cls):#(cls)cls表示的是类 在这个地方表示的就是cars
# q = cls()#可以动态的创建cls
# print(cls)
# c = cars()
# c.run() #对象调用成员方法
# c1 = cars.jisuan(1,2)
# print (c1) #静态方法的调用 类名可以调用
#
# p = cars()
# d = p.jisuan(3,5) # 用对象也可以调用
# print (d)
#
# 静态的方法建议推荐用类名来访问
# cars.clsmethod()#类方法默认第一个参数接受的是类名
# 类方法的调用
属性
用方法来描述我们的属性信息
注意
1.@propery 改变一个方法成为属性
2.这个方法只能有一个参数。self
3.必须有返回值
class person:
def __init__(self,name,birthday,num,gender):
self.name = name
self.num = num
self.gender = gender
self.birthday = birthday
@property #表示当前方法是一个属性,方法的返回值就是这个属性的值
def age(self): #如果要写属性 这个方法只能有一个参数,因为它不能
#age 本来应该是属性 因为要计算会改变 所以强制改为方法
return 10 #必须有返回值
p = person('alex','1989年12月1日','10086','不详',)
print(p.age) #可以直接访问属性,实际上访问的是age()方法,返回值就是属性值
私有
只能在自己类中访问和调用
__方法
__变量
__类变量
都是私有,别人访问不到,包括他儿子 无法继承
class Tiger:
def __init__(self,name,waibiao,qingzhenglianjiedezuofeng,qingfu,money,fangchan):
self.name = name
self.waibiao = waibiao
self.qingzhenglianjiedewaibiao = qingzhenglianjiedezuofeng
self.__qingfu = qingfu
self.__money =money
self.__fangchan = fangchan
def buy(self):
print ('我们有%s'%self.__money)#用的时候自己内部是可以用的但是外界可以看到
self.__sel()
def __sel(self):
print("我要卖掉%s" % self.__fangchan)
lh = Tiger('alex','仪表堂堂','清正廉洁的作风','潘潘',10000000,6)
print (lh.name)
print (lh.waibiao)
# print (lh.qingfu)#直接访问是访问不到的
lh.buy()# 访问buy
lh.__sel()
print(lh.__mone