# 1. 为对象在内存 中分配空间 -- 创建对象 # 2. 为对象属性 设置初始值 -- 初始化方法(init) # 3. __init__: 专门用来定义一个类 具有哪些属性的方法! class Cat: def __init__(self): # self.属性名 = 属性的初始值 self.name = "TOM" # print("这是一个初始化方法") def eat(self): print("%s 吃鱼" % self.name) # 使用类名()创建对象的时候会自动调用初始化方法__init__ tom = Cat() print(tom.name)
TOM 我去了
TOM
# 1. 为对象在内存 中分配空间 -- 创建对象 # 2. 为对象属性 设置初始值 -- 初始化方法(init) # 3. __init__: 专门用来定义一个类 具有哪些属性的方法! class Cat: def __init__(self, new_name): # self.属性名 = 属性的初始值 self.name = new_name # print("这是一个初始化方法") def eat(self): print("%s 吃鱼" % self.name) # 使用类名()创建对象的时候会自动调用初始化方法__init__ tom = Cat("TOM") print(tom.name) lazy_Cat = Cat("Lazy") lazy_Cat.eat()
class Cat:
def __init__(self, new_name):
# self.属性名 = 属性的初始值+
self.name = new_name
print("%s 我来了" % self.name)
def eat(self):
print("%s 吃鱼" % self.name)
def __del__(self):
print("%s 我去了" % self.name)
# 使用类名()创建对象的时候会自动调用初始化方法__init__
tom = Cat("TOM")
print(tom.name)
print("-"*50)
TOM 我来了
TOM
--------------------------------------------------
TOM 我去了
# -*- coding: utf-8 -*- """ Created on Fri Feb 22 16:35:56 2019 @author: Douzi """ class Cat: def __init__(self, new_name): # self.属性名 = 属性的初始值+ self.name = new_name print("%s 我来了" % self.name) def eat(self): print("%s 吃鱼" % self.name) def __del__(self): print("%s 我去了" % self.name) def __str__(self): # 必须返回一个字符串 return "我是小猫[%s]" % self.name # 使用类名()创建对象的时候会自动调用初始化方法__init__ tom = Cat("TOM") print(tom)
TOM 我来了
我是小猫[TOM]
TOM 我去了
用于 比较 两个对象的 内存地址 是否一致—是否是对同一个对象的引用
注意: is: 判断两个对象的引用是否一致; ==:判断两个对象的值是否一样
class Women: def __init__(self, name): self.name = name self.__age = 18 def __secret(self): print("%s 的年龄是 %d" % (self.name, self.__age)) def say(self): self.__secret() xiaofang = Women("小芳") # 私有属性不能被直接访问 # print(xiaofang.age) # 在对象的方法内部可以访问 # 私有方法同样不可以在外界方法 #xiaofang.__secret() xiaofang.say()
class Women: def __init__(self, name): self.name = name self.__age = 18 def __secret(self): print("%s 的年龄是 %d" % (self.name, self.__age)) def say(self): self.__secret() xiaofang = Women("小芳") # 伪私有方法 print(xiaofang._Women__age) xiaofang._Women__secret()
# -*- coding: utf-8 -*- """ Created on Fri Feb 22 19:23:57 2019 @author: Douzi """ class Animal: def eat(self): print("吃") def drink(self): print("喝") def run(self): print("跑") def sleep(self): print("睡") class Dog(Animal): def bark(self): print("www") class XiaoTianQuan(Dog): def fly(self): print("飞") def bark(self): print("叫的跟神一样") # 使用super(). 调用原本在父类中封装的方法 super().bark() # 父类名.方法(self). 调用父类中封装方法 Dog.bark(self) dog = Dog() dog.eat() xiaotian = XiaoTianQuan() xiaotian.bark()
吃
叫的跟神一样
www
www
注意:
子类对象 不能 在自己方法内部 直接 访问父类的私有属性或私有方法(可以通过父类公共方法访问)
子类对象 在外界可以访问到父类的公有属性和方法
概念:子类可以拥有多个父类,并且具有 所有父类 的属性和方法
原文:https://www.cnblogs.com/douzujun/p/10420297.html