• Python 15 面向对象二 类


    类的成员

    1. 类的成员

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

    2. 类的成员-变量

    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) # 中国
    

    通过程序来记录当前类被创建了多少个对象.

    class Foo:
        count = 0
       def __init__(self):
       	Foo.count += 1
    print(Foo.count)   # 0
    Foo()
    Foo()
    Foo()
    print(Foo.count)   # 3
    

    简单的总结:
    实例变量, 给对象用的.
    类变量, 多个对象共享的. 最好是用类名来访问. 这样更加规范

    3. 类的成员-方法

    1. 成员方法(实例方法)
    class Computer:
      # 实例方法(成员方法)
        def play(self):
        	print("我的电脑可以玩")
    c = Computer()
    c.play() # 对象直接去调用实例方法
    
    
    1. 静态方法
      静态方法. 静态方法不需要我们给方法传递self.
      静态方法需要我们在方法上面添加一个@staticmethod
    @staticmethod
    def fare():
      print("我的电脑非常厉害, 可以煎鸡蛋")
    Computer.fare() # 类名可以直接访问的
    c.fare() # 对象也可以访问. 但最好不要这么做. 以便于区分静态方法和实例方法
    

    静态方法和静态变量一样. 一般都是使用类名直接访问和调用的.

    1. 类方法
      类方法类方法在编写的时候, 需要在类方法上面添加@classmethod
    class Computer:
        def play(self):
      		print("我的电脑可以玩")
        @staticmethod
        def fare():
      		print("我的电脑很厉害, 可以煎鸡蛋")
        @classmethod
        def cal(cls, a, b):
     		print(cls)
      		return a+b
    print(Computer.cal(1, 2)) # 此时会自动的把类名传递给类方法的第一个参数
    

    4. 类的成员-属性

    在方法上添加一个@property就可以了

    class Person:
        def __init__(self):
            pass
        @property
        def age(self):
            return 1
    p = Person()
    age = p.age
    print(age)
    

    注意:

    1. 方法参数只能有一个self
    2. 方法上面要写@property
    3. 调用的时候, 我们不需要写括号. 直接当成属性变量来用就可以了.
    4. 这种套路只能取值. 不能设置值

    5. 私有

    1. 私有变量

    class Person:
      	def __init__(self, laopo, mimi):
      	self.__laopo = laopo # 私有的
      	self.__mimi = mi
    alex = Person("这是", "私有的")
    print(alex.__mimi) # 私有的. 谁都不取不到
    

    并不是私有的就一定取不到,有一定的局限性,
    看下面例子:

    class Person:
      def __init__(self, laopo, mimi):
      	self.__laopo = laopo # 私有的
      	self.__mimi = mimi
      def gaosuni(self):
      	print("胡辣汤")
      	return self.__mimi # 返回私有的变量
    alex = Person("炒饭", "更好吃")
    mimi = alex.gaosuni() # 通过这个print(mimi) 可以取到私有的变量
    

    2. 私有方法

    class Person:
     def __init__(self):
     	pass
     def __yue(self):
     	print("我要约会")
     def job(self):
     	print("我要⼯作")
     	self.__yue()
    p = Person()
    p.job()
    
  • 相关阅读:
    Linux下tty/pty/pts/ptmx详解
    ubuntu 12 或更高版本 下安装和配置 xrdp 远程登陆
    ubuntu+apache2+php5+mysql5.0的安装
    Ubuntu SSH 服务安装配置和使用
    ubuntu 12.10 进入命令行界面 (字符界面)
    ubuntu 下使用 cron 和 crontab
    Ubuntu用命令行发邮件mutt,报警发短信通知
    Ubuntu 安装 proftpd,并添加虚拟用户
    绝对有效的 ubuntu 12.xx 下 apache2 + svn 安装和配置方法
    添加android系统通知
  • 原文地址:https://www.cnblogs.com/NATO/p/9936065.html
Copyright © 2020-2023  润新知