Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Python - Jak mít uložené metody třídy v jiném souboru

A co teda chceš, aby to řešílo?
Psal jsi
- co metoda, to soubor - OK - ale samozřejmě pokud máš tunu nesmyslných metod, tak z toho plyne tuna nesmyslných souborů a protože počítač není věštec, tak je také někdy musí načíst (a tady mu to stačí jednou pro každý soubor, ať už pak těch class uděláš kolik chceš)
- všechny metody by se volaly mezi sebou přes self - OK
- metody by zůstaly i nadále součástí třídy MyClass - OK

Kód se samozřejmě vykonává v kontextu dané instance třídy (ledaže bys ty metody definoval jako metody nikoli instance, ale přímo té třídy, pak by se vykonávaly samozřejmě přímo v kontextu třídy ).

Takže napiš příklad, jak by sis to asi tak představoval a jak tohle nefunguje, a pak ten příklad můžeme rozebrat a dotvořit.

***********************

MyClass_method_4_python.py:



print("loading MyClass_method_4_python.py")
@classmethod
def MyClass_method_4(klass, a, b, c):
	print(klass,a,b,c)


MyClass_method_one_python.py:



print("loading MyClass_method_one_python.py")
def MyClass_method_one(self, a, b, c):
	self.method_two(a,b,c)

MyClass_method_two_python.py:



print("loading MyClass_method_two_python.py")
def MyClass_method_two(self, a, b, c):
	self.method_three(a,b,c)

MyClass_python.py:



#!/usr/bin/python -u
# vim: fileencoding=utf-8:nomodified:nowrap:textwidth=0:foldmethod=marker:foldcolumn=4:ruler:showcmd:lcs=tab\:|- list:noexpandtab:nosmarttab:softtabstop=0:shiftwidth=0

print("loading MyClass_python.py")
from  MyClass_method_one_python import MyClass_method_one
from  MyClass_method_two_python import MyClass_method_two
#....
class MyClass:
	def __init__(self):
		self.method_one(1,2,3)
		self.method_two(4,5,6)
	def method_one(self, a, b, c):
		MyClass_method_one(self, a, b, c)
	def method_two(self, a, b, c):
		MyClass_method_two(self, a, b, c)
	def method_three(self, a, b, c):
		print( a, b, c)
#.....
MyClass()


pok2.py:



#!/usr/bin/python -u
# vim: fileencoding=utf-8:nomodified:nowrap:textwidth=0:foldmethod=marker:foldcolumn=4:ruler:showcmd:lcs=tab\:|- list:noexpandtab:nosmarttab:softtabstop=0:shiftwidth=0
print("loading pok2.py")
class MyClass:
	def __init__(self):
		self.method_one(1,2,3)
		self.method_two(4,5,6)
	from  MyClass_method_one_python import MyClass_method_one as method_one
	from  MyClass_method_two_python import MyClass_method_two as method_two
	def method_three(self, a, b, c):
		print( a, b, c)
	from MyClass_method_4_python import MyClass_method_4 as class_method_4

MyClass.class_method_4("abra","ka","dabra")

MyClass()

b = MyClass()
c = MyClass()

c.method_one("C", "metoda číslo :", 1 )
b.method_two("B", "metoda číslo :", 2 )


***********************

$ ./MyClass_python.py 
loading MyClass_python.py
loading MyClass_method_one_python.py
loading MyClass_method_two_python.py
1 2 3
4 5 6




$ ./pok2.py 
loading pok2.py
loading MyClass_method_one_python.py
loading MyClass_method_two_python.py
loading MyClass_method_4_python.py
<class '__main__.MyClass'> abra ka dabra
1 2 3
4 5 6
1 2 3
4 5 6
1 2 3
4 5 6
C metoda číslo : 1
B metoda číslo : 2

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny