day16-2018-11-7 面向对象成员

# class Person:
#     def __init__(self, name, card_no, height, weight, address, laopo):
#         # 实例变量. 给对象赋值
#         self.name = name
#         self.card_no = card_no
#         self.height = height
#         self.weight = weight
#         self.address = address
#         self.laopo = laopo

# p1 = Person("马化腾", "123456789123456781", 1.60, 180, "深圳市南山区南山法院", "不知道")
# p1.company = "腾讯" # 添加实例变量-> 字段 -> 属性(java)
#
# p2 = Person("刘强东", "789456132456789123", 1.65, 190, "宿迁", "奶茶妹妹")
#
# print(p2.name)
# print(p1.laopo)
#
#
# class Car:
#     pass
# c = Car()
# c.color="123"


class Person:
    country = "中国"
    def __init__(self,name, age):
        self.name = name
        self.age = age

# Person.country = "大清"
# print(Person.country) # 直接使用类名进行访问
p1 = Person("alex", 185)
p1.country = "大清" # 添加了一个实例变量
print(p1.name)
print(p1.country)

p2 = Person("wusir", 145)
print(p2.name)
print(p2.country)

# 类变量的修改只能通过类名来完成
class Car:
    def run(self):
        print("会跑的车")

    def cul(self, a, b):
        return a + b

    def jump(self):
        print("you jump i jump")

c = Car()
c.run() # 调用实例方法
print(c.cul(1 , 3))
c.jump()
class Person:

    def chi(self): # 实例方法
        print("人在吃")

    # 类方法
    @classmethod # 类方法
    def he(cls): # cls 类
        print(cls)
        print("我是喝")

    @staticmethod
    def shui():  # 在类中定义的一个普通函数
        print("和你睡不等于睡你 -- 姜文")

    @staticmethod
    def 上天(height):  # 在类中定义的一个普通函数
        print("上天%s" % height)


# print(Person)
# Person.he()

# p = Person()
# p.he() # 不管用对象还是用类去访问类方法. 默认传递进去的是类

Person.shui()
Person.上天(500)
#
# p = Person()
# p.shui()
class User:
    def __init__(self, name, birthday, qq, email):
        self.name = name
        self.birthday = birthday
        self.qq = qq
        self.email = email

    # 方法
    @property # 可以把一个方法变成一个属性
    def age(self):
        return 2018 - self.birthday
    '''
        @property
        1. 函数只能有一个self参数. 
        2. 需要有返回值
        3. 不能赋值
        4. 调⽤的时候, 我们不需要写括号. 直接当成属性变量来⽤就可以了
        
    '''
u = User("王明", 1994, 1024663304, "wangming@126.com")
print(u.age)
u.qq = 10010
u.age = 18
class Person:
    def __init__(self, name): # 构造, 创建对象的时候自动调用
        self.__name = name # 私有的
        print("这里是构造方法")

    def init(self):
        print("实例方法")

    def __chi(self): # 私有的
        print("我要吃. 疯狂的吃")

    def he(self):
        self.__chi() # 内部调用
        print("我是喝", self.__name)

p = Person("孙艺珍")
p.he()
# # p.__init__() # 很蠢
# p.init()
# print(p.__name)
原文地址:https://www.cnblogs.com/VastTry/p/9922576.html