class Person(object): def __init__(self, name, age): self._name = name self._age = age # 访问器 - getter方法 @property def name(self): return self._name # 修改器 - setter方法 @name.setter def name(self, name): self._name = name # 访问器 - getter方法 @property def age(self): return self._age def play(self): if self._age <= 16: print('%s正在玩飞行棋.' % self._name) else: print('%s正在玩斗地主.' % self._name) def main(): person = Person('王大锤', 12) person.play() person.name = 'jax' person.play() # person.name = '白元芳' # AttributeError: can't set attribute if __name__ == '__main__': main() # %% from math import sqrt class Triangle(object): def __init__(self, a, b, c): self._a = a self._b = b self._c = c @staticmethod def is_valid(a, b, c): return a + b > c and b + c > a and a + c > b def perimeter(self): return self._a + self._b + self._c def area(self): half = self.perimeter() / 2 return sqrt(half * (half - self._a) * (half - self._b) * (half - self._c)) def main(): a, b, c = 3, 4, 5 # 静态方法和类方法都是通过给类发消息来调用的 if Triangle.is_valid(a, b, c): t = Triangle(a, b, c) print(t.perimeter()) # 也可以通过给类发消息来调用对象方法但是要传入接收消息的对象作为参数 # print(Triangle.perimeter(t)) print(t.area()) # print(Triangle.area(t)) else: print('无法构成三角形.') if __name__ == '__main__': main() # %% from math import sqrt class Triangle(object): def __init__(self, a, b, c): self._a = a self._b = b self._c = c @staticmethod def is_valid(a, b, c): return a + b > c and b + c > a and a + c > b def perimeter(self): return self._a + self._b + self._c def main(): a, b, c = 3, 4, 5 # 静态方法和类方法都是通过给类发消息来调用的 print(Triangle.is_valid(a, b, c)) if __name__ == '__main__': main() # %% from math import sqrt class Triangle(object): def __init__(self, a, b, c): self._a = a self._b = b self._c = c @classmethod def create_basic(cls): return cls(1,2,3) @staticmethod def is_valid(a, b, c): return a + b > c and b + c > a and a + c > b def perimeter(self): return self._a + self._b + self._c def main(): a, b, c = 3, 4, 5 # 静态方法和类方法都是通过给类发消息来调用的 print(True if Triangle.is_valid(a, b, c) else False) triangle = Triangle.create_basic() print(triangle.perimeter()) if __name__ == '__main__': main() # %%