#!/usr/bin/env python
# coding:utf-8
class Campus:
def __init__(self,name,addr,type):
self.Name = name
self.Addr = addr
self.Type = type
def details(self):
print("学样的详细信息, 名称:%s 地址:%s 类型:%s" %(self.Name,self.Addr,self.Type) )
c1 = Campus("南京大学","江苏南京","985")
print(c1.__dict__)
print(Campus.__dict__) # 注意实例字典与类的字典的区别
c1.details()
Campus.details(c1) # 使用类去调用方法时,需要传入具体的实例参数
#### 也推荐看看廖雪峰的教程: https://www.bilibili.com/video/av3803706?from=search&seid=6691387782253130457
#####
class Room:
clr = '可选的,默认白色'
def __init__(self,name,owner,width,length,height):
self.name = name
self.owner = owner
self.width = width
self.length = length
self.height = height
def area(self):
return self.width * self.length
@property # 此装饰器就是负责把一个方法变成静态属性调用
def space(self):
return self.width * self.length * self.height
@classmethod # 供类使用的方法,虽然实例也可以调用
def colour(cls): # 此 cls 表示自动传递类名作为参数
print("房间的色彩是",cls.clr)
@staticmethod # 比喻为类的工具包. 只是名义上的归属类管理,不能使用类变量和实例变量
def round(a,b):
print("地板使用%s或%s"%(a,b))
## 静态属性既可以访问实例属性,又可以访问类的属性
## 类方法 不能访问到实例的属性
## 静态方法 不能访问类的属性,也不能访问实例的属性
# self跟实例绑定, cls跟类绑定, @staticmethod 跟谁都不绑定
r1 = Room('公寓','alex',9,9,2)
r2 = Room('house','jerry',12,13,5)
print(r1.area())
print(r2.area())
print("空间:",r1.space) # 调用方法不一样了,省掉括号
print("空间:",r2.space) # @property的好处是封装一个属性, 使用时完全感知不到背后的逻辑
Room.colour() # 跟实例没有关系,只是类调用自己的函数. 类级别的操作.
Room.round('木板','瓷砖')
r1.round("牛皮","水泥") # 类或实例都可以调用
## 学着学着感觉到累了, 就去B站找了下以前喜欢的视频:
## 砖家 "你不知道的西游记" https://www.bilibili.com/video/av3803706?from=search&seid=6691387782253130457
## 这个系列的解说真是精彩, 以前在UKu上看过, 强力推荐给刚入社会的年轻人们看看.#!/usr/bin/env python
# coding:utf-8
class