zoukankan      html  css  js  c++  java
  • 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)



  • 相关阅读:
    Sprint第二个冲刺(第八天)
    Sprint第二个冲刺(第七天)
    Sprint第二个冲刺(第六天)
    Sprint第二个冲刺(第五天)
    Sprint第二个冲刺(第四天)
    Sprint第二个冲刺(第三天)
    Sprint第二个冲刺(第二天)
    Sprint第二个冲刺(第一天)
    新冲刺Sprint3(第三天)
    新冲刺Sprint3(第二天)
  • 原文地址:https://www.cnblogs.com/Li-Kai-168/p/9709221.html
Copyright © 2011-2022 走看看