17.变量 方法 属性

变量
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










 































posted on 2018-10-13 17:31  小王子QAQ  阅读(52)  评论(0)    收藏  举报