python017

核能来袭-成员

本节主要内容:

1.类的成员

2.类的成员-变量

3.类的成员-方法

4.类的成员-属性

5.私有

一.类的成员:

首先, 什什么是类的成员. 很简单. 你能在类中写什什么? 写的内容就是成员. 到⽬目前为⽌止. 我们已经学过一些了成员了.

class 类名:
    #方法
    def __init__(self,参数1,参数2...):
    #属性变量
    self.属性1=参数1
    self.属性2 = 参数2
    ...
    #方法
    def method(self):
        pass

在上⾯面代码中__init__和method都属于类的成员方法.  又称为实例方法.  总之这样的东西需要用对象来访问.  而上方的self.属性1 = 参数1 这个代码的含义是给对象设置属性信息. 含义是这个对象的xxx属性是xxxx. 这种东西又被称之为成员变量量或者实例变量, 再或者被称之为字段. 都是一个意思. 也就是说在类中, 是存在着实例变量和实例方法的.  还有哪些呢?  一个⼀个的看.

二.类的成员-变量

在类中变量分成两大类:

1.实例变量(字段)

2.类变量(静态变量)

实例变量就是每个实例都应该拥有的变量.比如:人的名字,人的爱好,每个人的个人信息,都属于实例变量.

class Person:
    #类变量,表示所有的该类的对象都共享这个变量
    country="中国"
    def __init__(self,name,num,birthday):
        #实例变量(字段) 表示你创建的每一个人都有这三个变量
        self.name=name
        self.num=num
        self.birthday=birthday
p1=Person("alex",18,"1840年06月01日")
print(p1.name)     #alex
print(p1.country)  #中国
p2=Person("wusir",28,"1894年07月25日")
print(p2.name)    #wusir
print(p2.country) #中国

我们发现对象p1和p2的name都是对象自己的.但是country是类的.大家公用同一个变量如何来如何验证呢?

class Person:
    #类变量,表示所有的该类的对象都共享这个变量
    country="中国"
    def __init__(self,name,num,birthday):
        #实例变量(字段) 表示你创建的每一个人都有这三个变量
        self.name=name
        self.num=num
        self.birthday=birthday
p1=Person("alex",18,"1840年06月01日")
print(p1.name)     #alex
print(p1.country)  #中国
p2=Person("wusir",28,"1894年07月25日")
print(p2.name)    #wusir
print(p2.country) #中国
Person.country="大清"  #在这里,我把国家改成大清
p1=Person("alex",18,"1840年06月01日")
print(p1.name)
print(p1.country)    #alex是大清的
p2=Person("wusir",28,"1894年07月25日")
print("p2.name")
print(p2.country)   #wusir也是大清的
案例.通过程序来记录当前类被创建了多少个对象.
class Foo:
    count=0
    def __init__(self):
        Foo.count+=1
print(Foo.count)
Foo()
Foo()
Foo()
print(Foo.count)

总结:实例变量,给对象用的

         类变量,多个对象共享的.最好是用类名来访问.这样就更加规范.

二.类的成员方法

1.成员方法(实例方法)

2.静态方法

3.类方法

class Person:
    def __init__(self):
        pass
    # 实例方法需要传递类的对象 self
    def think(self):
        print("人能思考")
        # 静态方法不需要传递对象或者类
        @staticmethod # 静态方法
        def jisuan(a, b):
            print("我来过这里")
            return a + b

    # 类方法: 第一个参数传递的是类名
    @classmethod
    def clsMethod(cls): # cls表示的类
        p = cls() # 可以动态的创建对象.
        print("我是一个类方法", p)
p = Person()
p.think()
Person.think(p)
#静态方法的调用:
c = Person.jisuan(1, 2) #  类名可以访问
print(c)
p = Person()
d = p.jisuan(3, 5) # 用对象也可以访问
print(d)
#记住, 静态的内容用类名访问
Person.clsMethod() # 类方法默认第一个参数接收的是类名

三.类的成员-属性

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", "不详", "1989年12月1日")
print(p.age) # 可以直接访问属性, 实际上访问的是age()方法. 返回值就是属性值

四.私有

class Tiger:

    def __init__(self, name, waibiao, qingzhenglianjiedezuofeng, qingfu, money, fangchan):
        self.name = name
        self.waibiao = waibiao
        self.qingzhenglianjiedezuofeng = 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", "正直", "非常刚正不阿, 666", "小潘潘", 10000000000, 5)
print(lh.qingzhenglianjiedezuofeng)
print(lh.name)
print(lh.waibiao)
lh.buy()
# lh.__sel()
# print(lh.__money)

 

 




posted on 2018-09-26 19:56  向往未来666  阅读(113)  评论(0编辑  收藏  举报