day 17 面向对象-成员
Day17面向对象-成员
变量
1.成员变量(实例变量)(字段column)
2.类变量(静态变量)直接写在类中的,共享出去的
方法
1.成员(实例)方法,加了self的调用的时候.必须用对象去访问
2.类方法.当方法需要传递类名的时候,需要类方法.规范规则:在上方加@classmethod
3.静态方法,当你的方法不需要传递当前类的对象的时候.语法规则:在上方加@staticmethod
属性
用方法来描述我们的属性信息
注意:
1.@property 改变一个方法成为属性
2.这个方法只能有一个参数
3.必须有返回值
私有
只能在自己的类中访问
__方法
__变量
__类变量
#变量
class Person:
country="中国" #类变量.不属于对象.对象可以访问
def __init__(self,name,num,gender,birthday):
#成员变量(实例变量)
self.name=name
self.num=num
self.gender=gender
self.birthday=birthday
#对象来访问(成员方法) (实例方法)
def marry(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):
pass
#实例方法需要传递类的对象 self
def think(self):
print("人能思考")
#静态方法不需要传递对象或者类
@staticmethod#静态方法
def jisuan(a,b):
print("我来过这里")
return a+b
#类方法:第一个参数传递的是类名
@classmethod
def clsMethod(cls):
p=cls()
print("我是一个类方法",p)
p=Person()
p.think()
Person.think(p)
# 静态方法的调用
# 类名访问
# 静态的内容也用类名访问
# 属性
class Person:
def __init__(self,name,num,gender,birthday):
self.name=name
self.num=num
self.gender=gender
self.birthday=birthday
@property
def age(self): #方法只有一个参数,self
return 10 #必须有返回值
p=Person("alex","10086","不详","1894943")
print(p.age)
# 私有
class Tiger:
def __init__(self,name,waibiao,qingzheng,qingfu,money,fangchan):
self.name=name
self.waibiao=waibiao
self.qingzheng=qingzheng
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,5)
lh.buy()
# 成员:
class Person:
def __init__(self,name,num,gender,birthday):
self.name=name
self.num=num
#对象来访问(成员方法)(实例方法)
# 成员:在类中定义的变量和方法都被称为成员