class Class1:
money = 10
def __init__(self,name):
self.name = name
print('我是父类,执行了')
def method1(self):
print('555555555555555')
class Class2(Class1):
money = 1000
#私有的变量(封装)
__star = 'fengzi'
def __init__(self,name,age):
#调用父类的方法
# Class1.__init__(self,name)
super().__init__(name)
self.age = age
print('我是子类,执行了')
def method1(self):
# 调用父类的方法
#Class1.method1(self)
super().method1()
print('66666666666666')
def method_new(self):
print(self.__star)
print(Class2.money)
# Class2.method1()
s1 = Class2('fengfeng',18)
s1.method1()
#可以通过这种方式访问私有属性
print(Class2._Class2__star)
print(Class2.__dict__)
#还可以间接访问
Class2.method_new(s1)
反射
class Class_a:
faker = 'fake'
def __init__(self,name,addr):
self.name = name
self.addr = addr[图片上传中...(NA@2NE]{((6OW4G%8[))8G6.png-94664-1520230442274-0)]
def method1(self):
print('5556')
def method2(self):
print('6666')
b1 = Class_a('xiye','shanghai')
print(hasattr(b1,'name'))
print(hasattr(b1,'method1'))
print(getattr(b1,'name','名字'))
print(getattr(b1,'method1','方法一'))
func = getattr(b1,'method1','方法1')
func()
setattr(b1,'xiaoming','a')
print(b1.__dict__)
delattr(b1,'name')
print(b1.__dict__)
setattr(b1,'func1',lambda x:x+1)
print(b1.__dict__)
print(b1.func1(10))

动态导入模块
# from m1 import t
# t.test1()
#返回的永远是最顶层的模块
# module_t = __import__('m1.t')
# print(module_t)
# module_t.t.test1()
#
# #from m1.t import *
# #私有化之后这样可以调用,没有绝对的私有
# from m1.t import test1,_test2
# test1()
# _test2()
#导入方式
#直接能拿到对应的模块
import importlib
a = importlib.import_module('m1.t')
print(a)
a.test1()
a._test2()
网友评论